package com.tfswx.fljdmxyy.service;

import com.tfswx.fljdmxyy.dto.sjgl.*;
import com.tfswx.fljdmxyy.query.sjgl.*;
import com.tfswx.newbie.boot.starter.page.PageParam;
import com.tfswx.newbie.boot.starter.page.PageResult;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 数据管理服务
 *
 * @Author 陈文佳
 * @Date 2023/03/24
 */
public interface SjglService {

    /**
     * 获取业务实体列表
     *
     * @param param 获取业务实体列表入参
     * @return List<YwstQueryResult> 业务实体列表
     */
    List<YwstQueryResult> queryYwst(YwstQueryParam param);

    /**
     * 修改业务实体
     *
     * @param dto 修改业务实体入参
     * @return Boolean 修改业务实体出参
     */
    Boolean updateYwst(YwstUpdateInputDTO dto);

    /**
     * 查询条件收藏
     *
     * @param dto 查询条件收藏入参
     * @return TjscGetOutputDTO 查询条件收藏出参
     */
    TjscGetOutputDTO getTjsc(TjscGetInputDTO dto);

    /**
     * 获取查询条件收藏列表
     *
     * @param param 获取查询条件收藏列表入参
     * @return List<TjscQueryResult> 获取查询条件收藏列表出参
     */
    List<TjscQueryResult> queryTjsc(TjscQueryParam param);

    /**
     * 添加实体字段
     *
     * @param dto 添加实体字段入参
     * @return StzdAddOutputDTO 添加实体字段出参
     */
    StzdAddOutputDTO addStzd(StzdAddInputDTO dto);

    /**
     * 查询实体字段
     *
     * @param dto 查询实体字段入参
     * @return StzdGetOutputDTO 查询实体字段出参
     */
    StzdGetOutputDTO getStzd(StzdGetInputDTO dto);

    /**
     * 修改查询条件收藏
     *
     * @param dto 修改查询条件收藏入参
     * @return Boolean 修改查询条件收藏出参
     */
    Boolean updateTjsc(TjscUpdateInputDTO dto);

    /**
     * 删除业务实体
     *
     * @param dto 删除业务实体入参
     * @return Boolean 删除业务实体出参
     */
    Boolean deleteYwst(YwstDeleteInputDTO dto);

    /**
     * 获取实体字段列表
     *
     * @param param 获取实体字段列表入参
     * @return List<StzdQueryResult> 获取实体字段列表出参
     */
    List<StzdQueryResult> queryStzd(StzdQueryParam param);

    /**
     * 删除条件收藏
     *
     * @param dto 删除条件收藏入参
     * @return Boolean 删除条件收藏出参
     */
    Boolean deleteTjsc(TjscDeleteInputDTO dto);

    /**
     * 添加业务实体
     *
     * @param dto 添加业务实体入参
     * @return YwstAddOutputDTO 添加业务实体出参
     */
    YwstAddOutputDTO addYwst(YwstAddInputDTO dto);

    /**
     * 删除实体字段
     *
     * @param dto 删除实体字段入参
     * @return Boolean 删除实体字段出参
     */
    Boolean deleteStzd(StzdDeleteInputDTO dto);

    /**
     * 添加查询条件收藏
     *
     * @param dto 添加查询条件收藏入参
     * @return TjscAddOutputDTO 添加查询条件收藏出参
     */
    TjscAddOutputDTO addTjsc(TjscAddInputDTO dto);

    /**
     * 查询业务实体
     *
     * @param dto 查询业务实体入参
     * @return YwstGetOutputDTO 查询业务实体出参
     */
    YwstGetOutputDTO getYwst(YwstGetInputDTO dto);

    /**
     * 修改实体字段
     *
     * @param dto 修改实体字段入参
     * @return Boolean 修改实体字段出参
     */
    Boolean updateStzd(StzdUpdateInputDTO dto);

    /**
     * 查询业务字段关系
     *
     * @return List<YwzdgxQueryResult> 查询业务字段关系出参
     */
    List<YwzdgxQueryResult> queryYwzdgx();

    /**
     * 组合查询
     *
     * @param param 组合查询入参
     * @return PageResult<Map<String, Object>> 组合查询出参
     */
    PageResult<Map<String, Object>> queryData(PageParam<DataQueryParam> param);

    /**
     * 导出组合查询全部
     *
     * @param param 导出组合查询全部出参
     * @param response 响应
     */
    void exportData(PageParam<DataQueryParam> param, HttpServletResponse response);

    /**
     * 导出组合查询全部
     *
     * @param param 导出组合查询全部出参
     * @param response 响应
     */
    void exportAll(PageParam<DataQueryParam> param, HttpServletResponse response);

    /**
     * 查询实体信息
     *
     * @return List<StxxQueryResult> 查询实体信息出参
     */
    List<StxxQueryResult> queryStxx();

    /**
     * 添加业务实体字段
     *
     * @param dto 添加业务实体字段入参
     * @return Boolean 添加业务实体字段出参
     */
    Boolean addYwstzd(YwstzdAddInputDTO dto);
}
